#include "log.h"
#include <QFile>
#include <QTextStream>
#include <QDateTime>
#include <QDir>
#include <QMutex>
#include <QMutexLocker>
#include <QDebug>

log::log()
{

}


namespace {
    QMutex logMutex; // 用于线程安全
}

void log::writeLog(const QString &name, const QString &log)
{
    // 线程安全锁定
    QMutexLocker locker(&logMutex);

    // 使用Qt的文件操作代替C标准库
    QFile file("./log.txt");

    // 尝试以追加和文本模式打开文件
    if (!file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text)) {
        return;
    }

    QTextStream out(&file);
    // 设置编码为UTF-8
    out.setCodec("UTF-8");

    // 使用Qt的时间格式化
    QString timestamp = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");

    // 写入日志
    out << timestamp << "\t"
        << name << "\t"
        << log << "\n";

    // 自动关闭文件(QFile析构时会自动关闭)
}

void log::tostring(){
    QFile file("./log.txt");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
        qDebug() << "无法打开日志文件";
        return;
    }

    QTextStream in(&file);
    in.setCodec("UTF-8");  // 设置编码为UTF-8

    while (!in.atEnd()) {
        QString line = in.readLine();
        qDebug().noquote() << line;  // 使用qDebug输出，自动处理编码
        // 或者使用标准输出：
        // QTextStream(stdout) << line << Qt::endl;
    }

    file.close();
}
